package com.itheima.ood.lambda.demo02;

public class LambdaDemo {

    // 定义一个成员变量，这个成员变量的类型是一个接口类型(ShowHandler)
    private ShowHandler showHandler = new ShowHandler() {
        @Override
        public void show() {
            System.out.println("showhanler...........");
        }
    } ;

    // 定义一个成员变量，这个成员变量的类型是一个接口类型(ShowHandler)
    private ShowHandler showHandler2 = () -> {
        System.out.println("showhanler2.............");
    };

    // Lambda表达式可以理解为就是匿名内部类的一种简化写法
    // 入口
    public static void main(String[] args) {

        // 1. 调用useShowHandler方法
        // 通过匿名内部类的方式去调用
        useShowHandler(new ShowHandler() {

            @Override
            public void show() {
                System.out.println("北京北京你真好....");
            }

        });

        System.out.println("-------------------------------------------");

        // 使用lambda表达式来完成方法的调用
        useShowHandler(() -> {
            System.out.println("北京北京你真好....");
        });

        /**
         * 局部接口类型的变量进行初始化使用lambda表达式
         */
        ShowHandler showHandler3 = () -> {
            System.out.println("哈哈...................");
        } ;

        showHandler3.show();

    }

    // 使用ShowHandler
    public static  void useShowHandler(ShowHandler showHandler) {
        showHandler.show();
    }

}
